  
#include "compile_run.hpp"
#include "../comm/httplib.h" 
#include <unistd.h>
using namespace ns_compile_and_run;
using namespace httplib;

void Usage(std::string proc)
{
    std::cerr << "Usage:" << "\n\t" << proc << std::endl; 
}

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }
    Server svr;

    svr.Post("/compile_and_run",[](const Request &req, Response &resp){
        std::string in_json = req.body;
        std::string out_json;
        if(!in_json.empty()){
            CompileAndRun::Start(in_json, &out_json);
            resp.set_content(out_json, "application/json;charset=utf-8");
        }
    });
    daemon(true, false);
    // 启动服务器！！
    svr.listen("0.0.0.0", atoi(argv[1]));
    return 0;
}

// int main()
// {
//     std::string in_json;
//     std::string out_json;

//     Json::Value in_value;
//     // 填各个字段的值
//     in_value["input"] = "";
//     in_value["code"] = R"(#include<iostream>
//     int main(){
//         std::cout << "翼蛇湖-纪宁" << std::endl;
//         while(1);
//         return 0;
//         })";
//     in_value["cpu_limit"] = 1;
//     in_value["mem_limit"] = 20;

//     Json::StyledWriter writer;
//     in_json = writer.write(in_value); // 序列化
//     CompileAndRun::Start(in_json, &out_json);
//     std::cout << out_json << std::endl;
//     return 0;
// } 